package com.qf.dao.impl;

import com.qf.dao.AccountDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * @Description: 公用常量
 * @Data: 2022/8/30 10:10
 * @Pacakge: com.qf.dao.impl
 * @ClassName: AccountDaoImpl
 * @Author: fan
 */
/*
    @Component 组件注解
    用法:定义在类名上
    作用:用于把当前类对象存入spring容器中
    属性:value-->用于指定bean的id,当我们不写时,它们默认值是当前类名,且首字母改为小写.
    Component的衍生注解
    @Service:一般作用于业务层
    @Controller:一般作用于控制层
    @Repository:一般作用于持久层
    @Scope-->表示的是声明bean的范围,其中value的值:singleton-->表示单例
                                              prototype-->表示多例
    @PostConstruct-->类似bean标签中的init-method属性,构造对象初始化之后执行的方法
    @PreDestroy-->容器销毁之后执行的方法
    @Value-->属于Spring注解,对属性值的注入,基本数据类型和String类型

 */
@Component
//@Scope("prototype")
@Scope("singleton")
public class AccountDaoImpl implements AccountDao {
    public AccountDaoImpl(){
        System.out.println("AccountDao无参构造");
    }
    @Override
    public void addAccount() {
        System.out.println("添加账户执行...");
    }
    @PostConstruct
    public void init(){
        System.out.println("accountDao的初始化方法");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("accountDao的销毁方法");
    }
}
